{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "646efde1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最近 2 年上涨月数 / 总月数：13 / 24 ≈ 54.17%\n",
      "最近 3 年上涨月数 / 总月数：19 / 36 ≈ 52.78%\n",
      "最近 5 年上涨月数 / 总月数：30 / 60 ≈ 50.00%\n",
      "最近 8 年上涨月数 / 总月数：43 / 96 ≈ 44.79%\n",
      "最近 10 年上涨月数 / 总月数：57 / 120 ≈ 47.50%\n",
      "最近 13 年上涨月数 / 总月数：73 / 156 ≈ 46.79%\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB6IklEQVR4nO3deXwT1frH8e8k3WihFCirVGhZFEQ2RVEQQUFccGO5iqKgIoJeccXlp+h1A/TidhU38Iq4oiKioFe9Im5XRZFVQGtp2WSxtLSlS9om8/ujZJq0KW21mTTl8369+pKcnEye58x4Onl6ZmKYpmkKAAAAAAAAsJEj1AEAAAAAAADg8ENRCgAAAAAAALajKAUAAAAAAADbUZQCAAAAAACA7ShKAQAAAAAAwHYUpQAAAAAAAGA7ilIAAAAAAACwHUUpAAAAAAAA2I6iFAAACGtut1umaYY6DAAAANQSRSkAABDWFi1apK5du2rPnj21el1RUZH2799f45/i4mK/15eUlGjNmjXKz8+32tatW6e9e/fWOof33ntPd999twoLC2v92mD44YcftGLFihr1/eyzz/Tll19KKhuToqIivyLhtm3b9OCDD6q0tLTWcbz88su67LLLlJeXV23foqIiSdLvv/+u2bNnq7i4WAUFBVYsa9asUVpaWq1jAAAAwWOY/GkRAACEsQsvvFCRkZF66623avW6O+64Qw8//HCN+z/77LOaPHmy9Xjnzp1q3769Vq5cqX79+kmSEhISdO+99+qmm27S4sWL9f333/ttIzY2Vvfcc49fW1FRkXr27KnmzZvrjTfekGEYAd/f4/HI5XKpc+fOioyM9Hvu0ksv1cKFC6vN4fXXX9ff/va3avtdcsklSktLqxR/ILfffrseffRR/eMf/1CrVq10zTXXWM899dRTOu6443TyySerpKREERERuvPOO5WYmKhbbrnF6vf888+rV69e6t+/v9+2R44cqZycHH322WeHjCE/P1+9evXS3LlzFRsbq/79+6uwsFAPPvigduzYofnz52v8+PHatGmTVq5cWW1OAADAHqyUAgAANZKRkSHDMKyfJk2aaNCgQfrhhx+sPh07drSej4qKUrdu3TRv3rxK2znrrLPUpEkTnXDCCVq/fv2fjmn9+vV6//339fbbb/vF5v2JiIjQTz/9FPC10dHRGjx4sEzTtH6WL1+uu+++26/NNE116NDBrxBUUlIih8NhbccrKipKMTExKikp0Weffaa33npLCQkJSkhI0KZNm/Tcc89ViuPmm29WWlqaNm/erD59+qh3795V/vTq1Uu///57pW1ERERo3LhxKi0trfJHkpo0aVKjcY2OjvbL61AefvhhPfnkk1q2bJnGjBmj3bt3KysrS8nJydZ4OBwORUREyO12a8GCBYqPj7deb5qm3nnnHY0ZM0aZmZlWe3Z2tj766CNNmzat2hji4uJ0zz33aNKkSVZRr7i4WC+88IJVSPzxxx81evToGuUEAADsQVEKAADUykMPPaQffvhBb7/9thITEzV48GBt27bNen7s2LH64Ycf9NVXX+myyy7TpEmT9N5770mSXC6Xhg8frt9//10LFy7UaaedpuHDhysnJ6fWcZimqZtuukl9+vRRQkKC0tPTlZ2drezsbG3dulVJSUm6+eab1bdv34Cvj4yMtApLv/32m7Zt26Y1a9Zo8eLF2rVrl7Zt26b9+/db/aOioqx/P//882rXrp0kqVevXlYR7I8//tC1116radOmKSIiQkceeaTuuOMO3XHHHRo2bJgiIiL8Ynjqqaf07LPP6sUXX6z28sHc3FwVFxerQ4cOlXJxOp01GrOaFpqcTqc1NjVx3XXX6auvvlKzZs3UunVrNWvWTA6HQ5GRkdbYSNJHH32kwsJCjRs3znqtYRh68803JUnjxo2zLrdbsGCBioqKdNZZZwUsOM6aNcvaxnfffaf9+/frsssu0wcffCBJevXVV3XGGWfou+++0+bNm7Vx40addNJJ1nhmZWX57V8AAGA/ilIAAKBWUlJSdPzxx+vMM8/Um2++qbi4OL/VUK1atdLxxx+vE088Uf/3f/+nU045xSo6vPzyy0pPT9eyZct09tlna9asWercubNeeOGFWscxe/ZsrVu3Th9//LEGDhyo+++/XwkJCYqPj9dNN92khIQE3XfffVW+PiIiwiq8dOnSRR06dNDNN9+sn3/+We3atVOHDh388vK9rG7y5Mn6448/JJXdf8m7oqp169Z6/vnn9c9//jNgoci30PPII4/ohhtu0AMPPKC1a9cGLLz4/owdO7bKXGpaQKpNoammvPfQioiIkMfjsYo+Ho9HJSUlfn2ffvppTZw4UY0aNfJrb9GihV555RV98sknmjNnjoqLi/XYY4/p//7v/5Senu734z2WLrjgAuv1v/32mz788EN9+eWXevDBByVJy5cvV0FBgT799FO9++67kqRBgwapWbNmatasmVq0aKFbb721zscDAADUXET1XQAAAAKLiopSSkrKIW8gbRiGdRPqzz77TKeeeqrat29vPX/BBRfo448/rtFlWl7//e9/deedd+qdd95RixYt9MQTT6hv374aOHCgvv32W3333Xf63//+V6n4UTEub+Fo7969ioqK0sKFC/X888/rq6++su6BFEhERIT13MSJE9W4cWNJZZec+a4QWr16tQYOHChJ2rVrl982unTpolmzZum2227TlVdeqXvvvVc33nij7r77biUnJ+uqq66y+t5xxx3VroZ6+eWX9fLLL1czcjW3a9cuv6KcaZpyuVxyOBy69tprJZXdPPykk07SrbfequnTp2vz5s3q1auX9Rrfm8OvXr1ay5cv19y5cwO+3+DBgzVnzhyNGjVKTz/9tAoKCnT77beroKBAn3/+uU477TS1bt1ac+fOVadOnXT00Udbrx03bpxGjhypUaNGqUePHtqwYYNOOeUUde3aVWeddZZOP/10jRs3Tq+88ookafjw4Tr11FMpSgEAEGIUpQAAwF+ye/duq/Diq6SkREuWLNHXX39t3Utp586dOvHEE/36paSkKDU1tVbvOXjwYL355pvWaplOnTrpscce01VXXaVGjRrpp59+CniZmy+3262IiAilpqbqwIEDioiI0L59++RyubR161Z5PB4VFxf7FdACmTdvno4//nhJZffU8jJNU3369LG+xe7pp5/W7NmzrecvvPBC6985OTlq06aNEhIS1LNnT02ZMkUej8cq1JWWlqply5aHjGP8+PGaP39+lc9XVWCrSlpaml/RxluUatq0qVWU6tGjh2688UY99NBDioiI0Pnnny+p7MbjsbGxksoKV1JZEe6tt95SUlJSle85ZcoU5ebm6p///KceeughxcfHa8uWLbrkkku0YsUKtW7dWkuXLrXex+uHH37QVVddpaSkJD3//PMaMGCAunXrpjFjxujZZ5/VihUrdM4551j9d+3apdatW/tdkgkAAOxHUQoAAPwpmZmZmjNnjrZt26YxY8ZY7U8++aSefPJJ6/HkyZM1ceJESVJhYaESEhL8ttO4cWPrUriaioiIsG5anZWVpeeee06PPPKIBg0apM2bN+viiy/WTTfdpAsvvNDvptq+cnNz1ahRI91+++36z3/+Y61ukqSTTjpJbrdbxcXFeuaZZw4Zi/eb9yryeDyHfJ330rbIyEj98ccf1rhMmjRJLpfL71vi8vPz1bRpU7lcLnk8nkorwFwuV43vK1VTAwcOtApqVYmIiNDMmTN10kknqV+/ftq+fbsMw7Die+WVV/TOO+/I4/HoxhtvlCQtXbpUUllh0ffeUlJZgbNVq1Zat26dWrRoIUnWTdqPOOIISWX3j6p4WeB//vMfnXfeebrvvvv06quv6rLLLtOpp56qN998U6+99ppatmyp1atXW/137dql5OTkPzcwAACgznBPKQAAUCtjx46VYRhq2bKlHnvsMc2dO9dv9dMll1yi1atX65tvvtG0adP0wgsv6I033pBUdqPtisUTwzBUWFhYqxhcLpeWLl2qyy+/XO3bt9eyZcv0+uuv64svvtCvv/6q8847T9OmTVNiYqJOOOEETZkypdI33+3bt09NmjTRu+++qz179mjr1q3KyMiwfrZv3678/Hy/y+gC8b2nlO/qrNLSUm3btk2zZs3SrFmz9Omnn/q97sknn1RUVJQMw9BXX31ljathGJo6dapeffVV6/Gbb76padOmKSYmxm+Fldf+/ftVXFx8yBulB9N5552ntm3bKisrS40aNVJOTo7279+viIgI6+bq0dHRevHFF5WXlyfTNK1ik6+rr75aV155pVq2bGnd/yojI0NS2So7SWrUqFGlQuP48eN1+eWX67ffftOkSZPUp08f/fHHHzr22GOVkJCguXPnau/evdqyZYsyMzOVmZmpY445JogjAgAAaoKVUgAAoFZmzZql4cOHq0mTJkpOTq508+yWLVuqd+/ekqSTTz5Zqampmj59usaOHatWrVppx44dfv337dunuLi4Gr//pZdeqnfffVeNGjXSoEGD9PLLL1urlbwFjCuvvFLjxo3TF198oTVr1uiTTz7xu7ROktLT09W/f39J0umnn64ffvih0nt9+umnGjp0aKX2P/74Q3l5eZKkAwcOWEUfj8ejvLw8ZWZmqqCgQJmZmdYldfv371dMTIy1jWuuuUYTJkxQRESEunfvrtdee019+vTR6NGjdf755+uyyy6z+p5zzjm66qqrdN555wUck/3792vp0qVW8c9ue/bsUVxcnPbt26eCggI1a9ZMUtnKp27duundd9/VnDlz9PHHH2vkyJG66KKLKm1j9erVWrp0qfXteV5ffPGFJOmDDz7QqaeeGvD9b7nlFr3//vvyeDwyTVPTp0/X9OnTVVBQoIcffljnnnuuTj31VC1evFidO3dW586d1bp16zoeBQAAUFuslAIAALXSoUMH9e7dW506darRt7l16dJF27dvlyT16tVLX3/9td/zq1atUrt27Wr8/lOmTNH777+vPXv2KC8vT3/729+UnJxc6eeoo47SpEmTdMMNNyg1NbXSjdTXr19vXcIVGxurBx54wFrxZJqmJPkVkXxdeOGF6tmzp+Lj43XBBReoY8eO6tixo/bv36877rhD06dP144dOzRu3Dht3rxZmzdv1t133+23jSZNmigxMVEJCQnKyclRp06dlJCQoKuuukq33nqr7rzzTiUkJCghIUGFhYVq3bq1EhMTlZiY6Lcd0zS1ceNGPfbYY37xV/yp68v7fM2dO1fjx4/XpZdeKtM0lZ6eLqny+PXv319fffVVwG3cc889OvvsszVixAirLT8/X2+88YZuvPFGzZ07V7t37w742rffflsul0u9evXSk08+qQMHDmjdunV+l3mOGzdOzz77rF599VUNGzasLtIGAAB/EUUpAAAQVBs3blTbtm0lSaNHj9b69ev14YcfSiq7wffLL78ccDVSVQYOHKhhw4YpMjJSUVFRuuWWWwIWYbyFEe/lY74FtE2bNmnv3r3q27evJFlFqJr6+uuvdeDAAc2cOVM7duzQ/v37tXLlSi1evFgul0tPPfWUfvzxR/Xs2bPabeXk5KigoMBauTN27Fh9+OGHOu6446w+Bw4cUKNGjQJe5vjtt98qKytLp5xySq1yqEvvv/9+wPevWAgbOnSo3n77bb9v5ZOkRYsW6eOPP9bjjz/u137bbbepTZs2euyxxzRw4ED97W9/s77JsaIlS5Zo1apVSk9P1yeffKK77rpLY8aMsQqPF198sQoKCvTOO+9oypQpfyVdAABQRyhKAQCAOrV37179+OOP+vzzz3Xbbbdp2bJluuSSSyRJxx57rK666iqNGTNG48aN0/HHH6+CgoJKq5hqKjIysto+gVYIvfXWW2revLmOPfZYSVJBQYGmT59u3cPJe8PzQ93r6rXXXtNtt92mDRs2SJJWrFih8847T999952WLFmirKwsv298q4r3ksOYmBjrvYcOHaqrr77aepyamqrTTz894DfXPf744+rWrZv1DYCB1LboVhs7d+7UqlWrrBVJVSksLFSLFi2Um5urhQsXWu1bt27VNddco7///e/q2rWr1X7vvfdqwYIFeuWVV2QYhp599ln98ssvGjZsmPbu3Vtp++ecc46++eYbxcfHa/z48XrzzTe1bds2/fe//5VUdmP7xo0bKyoqSrm5uXWUPQAA+Cu4pxQAAKhTb7zxht544w1FR0crJSVFs2fP1g033GA9/8ILL6h79+5644031K1bN7333ns68sgj//T75ebmWoUdX957V1UsyOzatUuPP/64Ro0apYiIslOh5cuXy+12+/Xbt2+fMjMz9cUXX2j//v1+97366aefNHnyZM2fP9+6L9WkSZP01Vdf6fHHH9fq1at17rnn+hWRSktLrWKXrx49eig7O7vK/LZu3arevXtr48aNlb65cOnSpXrnnXf08ssvB3ztunXr9Pnnn2vbtm1yu92VXv/rr7+qsLDQuuG6l3f11ubNmytt0+PxyOVyqVu3boqJidHLL7+s448/Xu3bt7f6+I6l9z5P55xzjmJiYjR+/HjdfffdOv/88xUfH299G9/06dOtfCdPnqyvvvpKixYtUp8+fSRJRx55pD755BOdccYZ6tWrl2bNmqXLLrvMWgEXERGhY489Vh988IFcLpfefvttrVu3Th9//LFiY2N16aWXql+/fho4cKDOPPNMLVq0SGeccUaV4w4AAGxgAgAAhKnhw4ebkg75k5qa6vearVu3mieddJK5bt26Q257165dptPpNOPj483TTjvNzM7Otp77xz/+Yd52222VXpOXl2defvnlZlRUlN/277//fjM2NtYcMmRIjXPzeDzm8ccfbxqGYZ566qmVni8qKjJPOukk85xzzjlkDoZhmC1btjTHjRtnlpSU+D1/9tlnm7GxsWbTpk1r/BMXF2dGRESYmzdvNgsLC80jjjjCnDFjhl+uQ4YMMSMjI82SkhJz7ty5piSzT58+5u+//27+8ccfZsuWLc0zzzzTdLvdpmma5rZt20zTNM0VK1aYkZGRZpcuXcy1a9cGzGnbtm3mySefbDqdTvPTTz81TdM0v/nmG3PChAlmfHy8OWrUKGt7e/fuNcePH29GRkaad9xxh+l2u83i4mLzb3/7m2kYhvnII4/UeH8AAIC6Z5hm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k1R+b6kFCxboxBNPtDsFilIAAAAAAADh5pRTTtH48ePVt29ftW7dWvPmzVObNm00depU3XLLLQFfU98u36MoBQAAAAAAEGZGjRqlTZs26YknntCuXbvUo0cPLV68WJGRkVW+xu12y+122xjloVGUAgAAAAAACKDb5k2hDqFKhmFo+vTpmj59eo1fU1hYqOLi4iBGVTsUpQAAAAAAAA4Dv/32W6hD8MO37wEAAAAAAMB2FKUAAAAAAABgO4pSAAAAAAAAsB1FKQAAAAAAANiOohQAAAAAAABsR1EKAAAAAAAAtqMoBQAAAAAAcJjZvXu3+vXrp5UrV4YsBopSAAAAAAAAh5n58+erqKhIffr0CVkMESF7ZwAAAAAAgHpszuTltr7fdc+dVuvXZGZmql+/fvr888/VsWNHSdKGDRt0xRVX6LffftPEiRP1yCOPyDAM6zUHDhzQY489pqioKKsolZ+fr9jYWBmGoeLiYhUUFOjRRx/VRRddVCe5BcJKKQAAAAAAgDCUmZmpESNGKCMjw2pzuVw699xzddxxx+nHH3/Uxo0bNX/+fL/X3XvvvTr55JO1Y8cObdiwQRs2bFB2draWLFmiDRs26Ndff9WOHTuCWpCSKEoBAAAAAACEpYsvvliXXHKJX9tHH32knJwcPfbYY+rUqZNmzJihF1980Xr+p59+0pw5czRjxgy7w62EohQAAAAAAEAYmjt3rqZOnerXtnbtWvXv31+xsbGSpJ49e2rjxo2SpOzsbI0ePVpXXXWVunfvHnCbpmmqtLRULpcruMGLe0oBAAAAAACEpeTk5Eptubm5fu2GYcjpdCo7O1tNmjTRww8/rGHDhikyMlKdO3eW0+mUJOXl5emss85SZGSk3G63evfurYULFwY1fopSAAAAAAAADURERISio6P92mJiYlRQUKBmzZppzJgxkqTo6Gh99dVXSkxMlCQlJCToo48+UufOnW2Llcv3AAAAAAAAGojmzZvrjz/+8GvLy8tTVFSUSkpKVFxcLI/HY62QqorH41FRUZFM0wxarKyUAgAAAAAAaCD69eunuXPnWo/T09PlcrnUvHlzPf3003rqqacUERGhpKQkDR482OqXl5ens88+W1FRUZLKilKlpaX6/PPPdcQRRwQlVopSAAAAAAAADcSgQYOUm5url156SVdccYVmzJihoUOHyul06oYb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s2Z1FR8AAAAAAAAaoFoVpUzT1F133aWMjAytWrXK77mXXnpJr732mt58801FR0fXaZAAAAAAAABoWGp0TykvwzA0evRojR492mozTVOPPfaYHn74YX366afq3bt3XccIAAAAAACABqZWRSmvWbNmKTs7Wzk5Ofrkk080YMAArVq1ipucAwAAAAAAoEaqvXzP5XLp3nvvVVZWltVmmqYKCgq0Z88e5eXlad++fcrOzg5qoAAAAAAAAGg4ql0ptXXrVv3vf//Tk08+qYKCAq1atUp33nmn9bzb7dZLL72k4cOHa86cORo5cmRQAwYAAAAAAED4q3alVNeuXfXpp58qNTVVDzzwgEaMGKGLL75Y27dvlyQ5nU5NnDhRS5cu1aRJk/T1118HPWgAAAAAAACEtxp/+17Lli11++23a8uWLUpKStL69evldrut54877jg99thjGjt2rA4cOBCUYAEAAAAAANAw1LgoJUk//vijRowYobvvvltnnXWWTjjhBF133XXW/aQuv/xy9e3bV7t37w5KsAAAAAAAAGgYalyUevbZZzV48GANHjxYsbGxMgxDb775pvLy8tStWzc9++yz8ng8WrJkiTp37hzMmAEAAAAAABDmalSU2rRpk2bOnKlPPvlE06dPV2RkpCSpS5cuWrBggT788EM9//zz6tWrl9LS0oIaMAAAAAAAAMJftd++J0ndunXTb7/9pqioqIDP9+3bV999952eeuopJScn12mAAAAAAAAAaHhqfPleVQUpr5iYGF133XUyDOMvBwUAAAAAAICGrUZFqfz8/EptQ4cO9Xu8Y8cOnXnmmfrXv/5VN5EBAAAAAACgwapRUeq0007TiBEj9Pnnn1ttW7dulSStXbtWU6dO1THHHKOuXbvq6quvDk6kAAAAAAAAaDBqdE+pL774Qm+//bbuuOMOmaapBQsWaNeuXWrZsqXatWun4cOH6/rrr9cVV1yh2NjYYMcMAAAAAACAMFejopRhGLrssst02WWXacWKFWrXrp3atGmjNWvWqHHjxpKkZ555RiNGjND//vc/NWvWLKhBAwAAAAAAILxVW5TauXOnkpKSFBMTI0kyTVOSVFJSolatWln9TNOUy+XS5Zdfrg8++CBI4QIAAAAAAKAhqLYodcQRR8jtdvt9q55pmurUqZO2bNni13ffvn0qKiqq+ygBAAAAAADQ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2lU7d+4MYYThj88UwcPYBhfjaz/D5GwBsIXD4VBeXp7i4uL0yy+/aOzYsTpw4IBuvvlmHX300Xr22WeVmpqqn376KdShhqWLL75YMTExeuihh1RSUqIJEyYoNTVVw4cP10033aSffvpJf//737V9+3YlJCSEOtywcuWVVyovL0/vv/++LrnkEqvdMAx999132rx5s4YPH66PPvoohFGGr5tvvlkffvihnn32WZ188snau3evrr32WpWWluqjjz5Sbm6uEhIS5PF4Qh1qWOrSpYuuv/566xJIt9utYcOG6aabbtK5556rrVu3aurUqVw+/Re53W59+umneu655/Tdd99p6tSpGj9+vJKSkjh2/6R+/fqpSZMmeu+99xQfH6+7775bb775pvr3769rr71W//73v7VlyxYtX7481KGGrQ8++EB33HGHNm3apNtvv10TJkyQx+PRtGnT1LRpU7322muhDhEAGjyKUrCYpslf44PI6XQqNzdXcXFxkspO4F988UWrGNWnTx/NmzdPRx11VIgjDU/79u3T+PHj9fHHH8vj8WjkyJF68cUXdcMNN+jdd99V8+bNNXv2bI0aNSrUoYadBQsWKDMzU/fcc4+eeeaZKvtdfvnlNkbVcBQWFur666/Xyy+/LLfbLYfDoWHDhumFF15QUlKS8vPz1adPH/3666+hDjUsffjhhxozZox69uypDh06aN26dWrSpIm+/vpra6Uq6ta2bds0Y8YMLV68WH/88QdFqT9p3bp1uuCCC7Rr1y7FxsaqU6dO+uijjzRt2jR98skn6tSpk+bPn6/k5ORQhxrWTNPUG2+8oX/961/64YcfJEkDBgzQ4sWL1aJFixBHF97cbre+/PJL/fDDD8rKylJpaani4+PVs2dPnX322YqKigp1iEAl77//vs444wzFxMRUem7ZsmXq1q2bUlJSQhBZw0VRCpLKbmJ8xhlnaNasWVzaFASmaWr79u068sgjQx1Kg+RbUD1w4IA8Ho/i4+NDHFXDUFhYqEaNGikrK0v33HOPnn766VCH1KD4HrtFRUXavn272rZtq8aNG4c4sobBO76///67Fi1apJ07d6pz58667LLLrMvL8Od454ZDSU9P11dffUXB+k/wHrtut1vr1q2T0+lUz549Qx1Wg3CoP8Lm5eXJ7XazoroOfPDBB7r66qvVpEkTnXzyyWrZ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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import akshare as ak\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import datetime\n",
    "\n",
    "# ===== 参数 =====\n",
    "symbol = \"PB0\"\n",
    "year_spans = [2, 3, 5, 8, 10, 13]\n",
    "\n",
    "today = datetime.datetime.today()\n",
    "full_start_date = (today - pd.DateOffset(years=max(year_spans))).strftime('%Y%m%d')\n",
    "end_date = today.strftime('%Y%m%d')\n",
    "\n",
    "# ===== 获取数据 =====\n",
    "df = ak.futures_main_sina(symbol=symbol, start_date=full_start_date, end_date=end_date)\n",
    "df[\"日期\"] = pd.to_datetime(df[\"日期\"])\n",
    "df = df.sort_values(\"日期\")\n",
    "\n",
    "# ===== 统计每年周期内的上涨月份次数 =====\n",
    "bar_data = {}\n",
    "\n",
    "for years in year_spans:\n",
    "    cutoff = today - pd.DateOffset(years=years)\n",
    "    df_cut = df[df[\"日期\"] >= cutoff].copy()\n",
    "\n",
    "    df_cut[\"ym\"] = df_cut[\"日期\"].dt.to_period(\"M\")\n",
    "\n",
    "    # 获取每月首日开盘与末日收盘\n",
    "    monthly = df_cut.groupby(\"ym\").agg(\n",
    "        open_price=(\"开盘价\", \"first\"),\n",
    "        close_price=(\"收盘价\", \"last\"),\n",
    "        month=(\"日期\", lambda x: x.iloc[0].month)\n",
    "    )\n",
    "    monthly[\"up\"] = monthly[\"close_price\"] > monthly[\"open_price\"]\n",
    "\n",
    "    # 每月上涨次数\n",
    "    up_counts = monthly.groupby(\"month\")[\"up\"].sum()\n",
    "    total_counts = monthly.groupby(\"month\")[\"up\"].count()\n",
    "    up_counts = up_counts.reindex(range(1, 13), fill_value=0)\n",
    "    total_counts = total_counts.reindex(range(1, 13), fill_value=0)\n",
    "\n",
    "    bar_data[years] = up_counts\n",
    "\n",
    "    total_up = up_counts.sum()\n",
    "    total_months = total_counts.sum()\n",
    "    prob = total_up / total_months if total_months else 0\n",
    "\n",
    "    print(f\"最近 {years} 年上涨月数 / 总月数：{total_up:.0f} / {total_months:.0f} ≈ {prob:.2%}\")\n",
    "\n",
    "# ===== 画图：上涨次数 =====\n",
    "plt.figure(figsize=(12, 6))\n",
    "bar_width = 0.1\n",
    "months = np.arange(1, 13)\n",
    "offsets = np.linspace(-bar_width * len(year_spans) / 2, bar_width * len(year_spans) / 2, len(year_spans))\n",
    "\n",
    "for i, years in enumerate(year_spans):\n",
    "    counts = bar_data[years]\n",
    "    plt.bar(months + offsets[i], counts.values, width=bar_width, label=f\"{years}年\")\n",
    "\n",
    "plt.xticks(months, [f\"{m}月\" for m in months], rotation=-90)\n",
    "plt.xlabel(\"月份\")\n",
    "plt.ylabel(\"上涨次数\")\n",
    "plt.title(f\"{symbol.upper()} 各周期每月上涨次数\")\n",
    "plt.grid(axis='y', linestyle='--', alpha=0.5)\n",
    "plt.legend()\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
